/*
 * PagPrincipal.java
 * 
 * Projeto: Kruskal - SRAC
 * LEDS - Laboratório de Engenharia e Desenvolvimento de Software
 * IFES - Instituto Federal do Espírito Santo - Campus Serra.
 */
package srac.controleatividades.cih;

import java.util.Calendar;
import org.zkoss.zk.ui.Executions;
import org.zkoss.zk.ui.event.ClientInfoEvent;
import org.zkoss.zk.ui.event.Event;
import org.zkoss.zk.ui.util.GenericForwardComposer;
import org.zkoss.zul.*;
import srac.controleatividades.cci.CtrlAtividade;
import srac.controleatividades.cci.CtrlPrincipal;
import srac.controleatividades.cdp.*;

public class PagPrincipal extends GenericForwardComposer {
    private CtrlPrincipal ctrl = CtrlPrincipal.getInstance();
    private CtrlAtividade ctrlAtividade = CtrlAtividade.getInstance();
    //private static PagPrincipal instance = null;
    
    private Div div;
    private Usuario user;
    private North north;
    private West west;
    private South south;
    private Borderlayout border, telaprincipal;
    private Label nomeUsuario;
    
    private Toolbarbutton categoria;
    private Toolbarbutton tipoAtividade;
    private Toolbarbutton etapa;
    private Toolbarbutton atividadeComplementar;
    
        
    private Toolbarbutton registroValidacao;
    private Toolbarbutton registroConferencia;
    
    private Toolbarbutton evento;
    private Toolbarbutton confirmarPresenca;
    
    private Toolbarbutton submissao;
    private Toolbarbutton resultadoEtapa;
    private Toolbarbutton historico; 
    
    private Toolbarbutton inscricaoEvento;
    
    private Panel controleAtividades;
    private Panel cadastroEventos;
    private Panel cadastroRelatorios;
    private Panel relatorios;
    private Panel inscricao;
    
    private Panel gerenciaUsuarios;
    
    private Div datas;
    private Label dataInicioSubmissao;
    private Label dataFimSubmissao;
    private Label dataFimVerificacao;
    private Label dataFimEtapa;
    private Label semEtapas;
    
    
    
    private Etapa e;
    private Etapa proxima;
    
    


    public void onCreate$div(Event event) {
        user = (Usuario) execution.getSession().getAttribute("usuario");
        
        e = ctrlAtividade.obterEtapaAtual();
        
        if(e==null)
        {
            proxima = ctrlAtividade.obterProximaEtapa();
        }
        else
        {
            proxima = e;
        }
        
        //Mostrando as datas da etapa
        
        if(proxima!=null)
        {
            datas.setVisible(true);
            semEtapas.setVisible(false);
            dataInicioSubmissao.setValue(ctrlAtividade.formatarData(proxima.getDataInicioSubmissao()));
            if(ctrlAtividade.passou(proxima.getDataInicioSubmissao())){
                dataInicioSubmissao.setStyle("color:red");
            }
            
            dataFimSubmissao.setValue(ctrlAtividade.formatarData(proxima.getDataFimSubmissao()));
            if(ctrlAtividade.passou(proxima.getDataFimSubmissao())){
                dataFimSubmissao.setStyle("color:red");
            }
            
            dataFimVerificacao.setValue(ctrlAtividade.formatarData(proxima.getDataFimVerificacao()));
            if(ctrlAtividade.passou(proxima.getDataFimVerificacao())){
                dataFimVerificacao.setStyle("color:red");
            }
            
            dataFimEtapa.setValue(ctrlAtividade.formatarData(proxima.getDataFimValidacao()));
        }
        
        else
        {
            datas.setVisible(false);
            semEtapas.setVisible(true);
        }
        
        
        if (user != null) {
            //setando nome do usuario na mensagem de boas vindas
            if (user.getTipo() == TipoUsuario.ALUNO) {
                Aluno aluno = (Aluno) ctrl.obterAluno(user);
                
                nomeUsuario.setValue("SEJA BEM VINDO(A) " + aluno.getNome().toUpperCase());
            }
            else if (user.getTipo() == TipoUsuario.ADMINISTRADOR) {
                
                nomeUsuario.setValue("SEJA BEM VINDO ADMINISTRADOR(A)");
            }
            else {
                Funcionario funcionario = (Funcionario) ctrl.obterFuncionario(user);
                nomeUsuario.setValue("SEJA BEM VINDO(A) " + funcionario.getNome().toUpperCase());
            }
            
            //habilitando funcionalidades a partir do tipo de usuario
            if (user.getTipo() == TipoUsuario.ALUNO) {
                cadastroEventos.setVisible(false);
                
                categoria.setVisible(false);
                tipoAtividade.setVisible(false);
                etapa.setVisible(false);
                registroValidacao.setVisible(false);
                registroConferencia.setVisible(false);
                relatorios.setVisible(false);
                gerenciaUsuarios.setVisible(false);
                
            }
            else if (user.getTipo() == TipoUsuario.SECRETARIA) {
                cadastroEventos.setVisible(false);
                inscricao.setVisible(false);
                
                categoria.setVisible(false);
                tipoAtividade.setVisible(false);
                etapa.setVisible(false);
                registroValidacao.setVisible(false);
                atividadeComplementar.setVisible(false);
                registroConferencia.setDisabled(false);
                relatorios.setVisible(false);
                gerenciaUsuarios.setVisible(false);
                
                if (e != null) {
                    if(!e.getStatusEtapa().equals(StatusEtapa.CONFERENCIA_ABERTA))
                    {
                        registroConferencia.setDisabled(true);
                    }
                }
                else
                {
                   registroConferencia.setDisabled(true); 
                }
            }
            else if(user.getTipo() == TipoUsuario.PEDAGOGO){
                cadastroEventos.setVisible(false);
                inscricao.setVisible(false);
                
                registroConferencia.setVisible(false);                
                categoria.setVisible(false);
                tipoAtividade.setVisible(false);
                etapa.setVisible(false);
                atividadeComplementar.setVisible(false);
                registroValidacao.setDisabled(false);
                relatorios.setVisible(true);
                gerenciaUsuarios.setVisible(false);
                
                if (e != null) {
                    if(!e.getStatusEtapa().equals(StatusEtapa.VALIDACAO_ABERTA))
                    {
                        registroValidacao.setDisabled(true);
                    }
                }
                else{
                    registroValidacao.setDisabled(true);
                }
            }
            else{
                inscricao.setVisible(false);
                
                registroConferencia.setVisible(false);   
                atividadeComplementar.setVisible(false);
                registroValidacao.setVisible(false);
                relatorios.setVisible(false);
                
                

            }  
        }
        else {
            Executions.sendRedirect("/");
            div.detach();
        }
    }
    
    public void onClientInfo$div(ClientInfoEvent event)
    {
        telaprincipal.setHeight(event.getDesktopHeight() + "px");
        telaprincipal.setWidth((event.getDesktopWidth() - 10) + "px");
        north.setSize((event.getDesktopHeight() * 0.037) + "px");
        // vlayout.setHeight((event.getDesktopHeight() * 0.246) + "px");
        west.setSize((event.getDesktopHeight() * 0.246) + "px");
        south.setSize((event.getDesktopHeight() * 0.049) + "px");
    }

    
    public void onClick$logout(Event event) {
        Executions.getCurrent().getSession().removeAttribute("usuario");
        Executions.sendRedirect("/");
    }
    
    public void onClick$about(Event event) {
        ctrl.abrirAbout();
    }
    
    public void onClick$alterarSenha(Event event) {
        ctrl.abrirAlterarSenha(user);
    }
    
    public void onClick$visualizarTabela(Event event) {
        ctrlAtividade.gerarTabelaAtividades();
    }
    
    public void onClick$relatorioFinal(Event event) {
        if(ctrlAtividade.verificarExistenciaRelatorio())
        {
            border.getCenter().getChildren().clear();
            Window winDisciplina = (Window) ctrl.abrirRelatorioFinal();
            winDisciplina.setWidth("100%");
            winDisciplina.setHeight("100%");
            winDisciplina.setParent(border.getCenter());
        }
        else
        {
            Messagebox.show("Não existe nenhum relatório a ser gerado. Pois nenhuma etapa foi finalizada!", " ", 0, Messagebox.INFORMATION);
        }
        
    }
    
    public void onClick$evento(Event event) {
        border.getCenter().getChildren().clear();
        Window winDisciplina = (Window) ctrl.abrirEventosEvento();
        winDisciplina.setWidth("100%");
        winDisciplina.setHeight("100%");
        winDisciplina.setParent(border.getCenter());
    }
    
    public void onClick$confirmarPresenca(Event event) {
        border.getCenter().getChildren().clear();
        Window winDisciplina = (Window) ctrl.abrirEventosConfirmarPresenca();
        winDisciplina.setWidth("100%");
        winDisciplina.setHeight("100%");
        winDisciplina.setParent(border.getCenter());
    }
    
    public void onClick$registrarPresenca(Event event) {
        border.getCenter().getChildren().clear();
        Window winDisciplina = (Window) ctrl.abrirEventosEvento();
        winDisciplina.setWidth("100%");
        winDisciplina.setHeight("100%");
        winDisciplina.setParent(border.getCenter());
    }
    
    public void onClick$categoria(Event event) {
        border.getCenter().getChildren().clear();
        Window winDisciplina = (Window) ctrl.abrirEventosCategoria();
        winDisciplina.setWidth("100%");
        winDisciplina.setHeight("100%");
        winDisciplina.setParent(border.getCenter());
    }
    
    public void onClick$tipoAtividade(Event event) {
        border.getCenter().getChildren().clear();
        Window winDisciplina = (Window) ctrl.abrirEventosTipoAtividade();
        winDisciplina.setWidth("100%");
        winDisciplina.setHeight("100%");
        winDisciplina.setParent(border.getCenter());
    }
    
    public void onClick$etapa(Event event) {
        border.getCenter().getChildren().clear();
        Window winDisciplina = (Window) ctrl.abrirEventosEtapa();
        winDisciplina.setWidth("100%");
        winDisciplina.setHeight("100%");
        winDisciplina.setParent(border.getCenter());
    }
    
    public void onClick$atividadeComplementar(Event event) {
        border.getCenter().getChildren().clear();
        Window winDisciplina = (Window) ctrl.abrirEventosAtividadeComplementar();
        winDisciplina.setWidth("100%");
        winDisciplina.setHeight("100%");
        winDisciplina.setParent(border.getCenter());
    }
    
    public void onClick$registroValidacao(Event event) {
        border.getCenter().getChildren().clear();
        Window winDisciplina = (Window) ctrl.abrirEventosRegistroAC();
        winDisciplina.setWidth("100%");
        winDisciplina.setHeight("100%");
        winDisciplina.setParent(border.getCenter());
    }
    
    public void onClick$regsitroConferencia(Event event) {
        border.getCenter().getChildren().clear();
        Window winDisciplina = (Window) ctrl.abrirEventosAtividadeComplementar();
        winDisciplina.setWidth("100%");
        winDisciplina.setHeight("100%");
        winDisciplina.setParent(border.getCenter());
    }
	
    public void onClick$inscricaoEvento(Event event) {
        border.getCenter().getChildren().clear();
        Window winDisciplina = (Window) ctrl.abrirEventosInscricao();
        winDisciplina.setWidth("100%");
        winDisciplina.setHeight("100%");
        winDisciplina.setParent(border.getCenter());
    }
        
    public void onClick$registroAC(Event event) {
        border.getCenter().getChildren().clear();
        Window winDisciplina = (Window) ctrl.abrirEventosRegistroAC();
        winDisciplina.setWidth("100%");
        winDisciplina.setHeight("100%");
        winDisciplina.setParent(border.getCenter());
    }
	
    public void onClick$registroConferencia(Event event) {
        border.getCenter().getChildren().clear();
        Window winDisciplina = (Window) ctrl.abrirRegistroConferencia();
        winDisciplina.setWidth("100%");
        winDisciplina.setHeight("100%");
        winDisciplina.setParent(border.getCenter());
    }
    
    public void onClick$funcionarios(Event event) {
        border.getCenter().getChildren().clear();
        Window winDisciplina = (Window) ctrl.abrirEventosFuncionario();
        winDisciplina.setWidth("100%");
        winDisciplina.setHeight("100%");
        winDisciplina.setParent(border.getCenter());
    }
    
    public void onClick$alunos(Event event) {
        border.getCenter().getChildren().clear();
        Window winDisciplina = (Window) ctrl.abrirEventosAluno();
        winDisciplina.setWidth("100%");
        winDisciplina.setHeight("100%");
        winDisciplina.setParent(border.getCenter());
    }
    
    
    
}
